function [date_diff,prof_diff,data_diff,lon_diff,lat_diff]= transform_2Dmat_bot(date_dec,prof_bot,data,lon,lat)
% Subroutine permettant de transformer
% les donnees � 1D en matrice a 2D.
%
% G. Charria 01/2006 - Modif 08/2009 !
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


switch nargin
 case 5 

  % ---- Estimation du nombre de profondeurs differentes
  a=sort(date_dec);
  n_dat=1;
  date_diff(n_dat)=a(1);
  for ia=2:size(a,2)
    if (a(ia) > a(ia-1))
      n_dat=n_dat+1;
    end
    date_diff(n_dat)=a(ia);
  end
  %disp(['Nombre de Dates differentes: ',num2str(n_dat)])
  

  
  
  
  % ---- Estimation du nombre de dates differentes
  b=sort(prof_bot);
  n_prof_bot=1;
  prof_diff(n_prof_bot)=b(1);
  for ib=2:size(b,2)
    if (b(ib) > b(ib-1))
      n_prof_bot=n_prof_bot+1;
    end
    prof_diff(n_prof_bot)=b(ib);
  end
  %disp(['Nombre de Profondeurs differentes: ',num2str(n_prof_bot)])
  
  % ---- Reduction des dates pour les 500 premiers metres.
  index2=find(prof_diff <= 500);
  interm1=prof_diff(index2);
  clear prof_diff
  prof_diff=interm1;
  
  prof_diff=repmat(prof_diff,[size(date_diff,2) 1]);
  date_diff=repmat(date_diff,[size(prof_diff,2) 1]);
  date_diff=permute(date_diff,[2 1]);
  
  % ---- Nouvelles dimensions profondeur/temps
  %disp(['Nombre de profondeurs conservees: ',num2str(size(prof_diff,2))])
  %disp(['Nombre de dates conservees: ',num2str(size(date_diff,2))])
  
  
  % ---- Creation d un tableau de donnees 2D
  data_diff(1:size(date_diff,1),1:size(prof_diff,2))=NaN;
  lon_diff(1:size(date_diff,1),1:size(prof_diff,2))=NaN;
  lat_diff(1:size(date_diff,1),1:size(prof_diff,2))=NaN;
  %whos

  for iprof=1:size(prof_diff,2)
    for idate=1:size(date_diff,1)  
      clear index
      %whos
      %find((date_dec == date_diff(idate)))
      %find(prof_bot == prof_diff(iprof))
      index=intersect(find((date_dec == date_diff(idate,iprof))),find(prof_bot == prof_diff(idate,iprof)));
      if (isempty(index) == 0)
	%disp(['coucou',num2str(index)])    
	data_diff(idate,iprof)=mean(data(index));
    lon_diff(idate,iprof)=mean(lon(index));
    lat_diff(idate,iprof)=mean(lat(index));
    
	% On prend la moyenne au cas ou plusieurs valeurs ...     
      end
    end
  end
  
  %figure
  %pcolor(data_diff); shading flat; colorbar;
  
 otherwise
  disp('Wrong number of arguments'); 
  prof_diff=[]; 
  date_diff=[];
  data_diff=[];
  return
end